#include <stdio.h>
#include"uartToLoraFrame.h"

void print_array(uint8_t* data, uint8_t len);

int main( void ){

    /* 数组存放传感器数据，格式根据自己需求设定，此处用固定值进行测试 */
    uint8_t datain[MAX_PAYLOAD_LENGTH] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00};
    
    uint8_t inlen; /* 传感器数据有效长度，如上面的测试数据即为10 */   
    
    /* 使用数组按照设定的格式存放打包后的传感器数据协议帧，该通过调用与lora连接的串口发送该数组即可实现模块向网关发送数据 */
    uint8_t dataout[MAX_FRAME_LENGTH] = {0};

    uint8_t outlen; /* 发送数组长度 */

    inlen  = 10;

    if(genMsgFrame(datain, &inlen, dataout, &outlen) == false){
        printf("gen message error!\r\n");
        return 0;
    }

    print_array(dataout, outlen);

    return 0;
}


/* 打印数组内容用于调试 */
void print_array(uint8_t* data, uint8_t len){
    
    uint8_t i = 0;
    
    printf("[");
    for(i = 0; i < len; i++){
        printf("0x%02x ", data[i]);
    }
    printf("]\r\n");
}


/* 在STM32单片机中的应用实例说明
 * step 1 需要初始化与LoRa模块SETB, SETA相连的GPIO端口以及和TXD RXD相连的串口外设。传感器端口根据实际连接的传感器类型自行初始化
 *
 * step 2 通过传感器获取需要发送的数据，存放到数组中，如datain[MAX_PAYLOAD_LENGTH]
 * 
 * step 3 通过genMsgFrame(datain, &inlen, dataout, &outlen)生成串口消息帧
 * 
 * step 4 数据发送流程：（时序要求，见模块文档）
 *          1. 拉低GPIO SETA端口，延时50ms
 *          2. 调用串口发送函数将串口消息帧发送出去
 *          3. 延时50ms 拉高GPIO SETA端口
 * 
 * step 5 结束
 *
 */



/* step 4
void uplink(uint8_t* pBuf, uint8_t bufLen)
{
    	HAL_GPIO_WritePin(SETA_GPIO_Port, SETA_Pin, GPIO_PIN_RESET);    // 拉低SETA
		HAL_Delay(50);  // 延时

		HAL_UART_Transmit_IT(&huart1, (uint8_t*)pBuf, bufLen);		// 发送
		while(TxFlag != 1);
		TxFlag = 0;

        HAL_Delay(50);  // 延时
		HAL_GPIO_WritePin(SETA_GPIO_Port, SETA_Pin, GPIO_PIN_SET);  // 拉高SETA
}
*/


